package com.atguigu.guli.service.edu.controller;


import com.atguigu.guli.service.edu.entity.Teacher;
import com.atguigu.guli.service.edu.service.TeacherService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * postman:功能模块测试
 * swagger2/3:功能模块测试
 *      1.引入swagger依赖
 *      2.创建swagger配置类,启用swagger
 *          >swagger注解:
 *              2.1对controller进行分组的注解或者配置
 *                  接口分为两种,一种为管理员访问,一种是会员访问
 *              2.2对controller和它的接口进行描述的注解
 *                 @Api:描述接口类
 *                  @ApiOpration:描述接口中的一个方法
 *              2.3对接口返回值对象进行描述的注解
 *                  @ApiModel: 描述javabean
 *                  @ApiModelProperty: 描述javabean的一个属性
 *      3.项目运行时,可以通过路径:http://ip:端口号/swagger-ui.html
 * jmeter:并发性能测压
 */
@RestController
@RequestMapping("/edu/teacher")
@Api(tags = "讲师模块")
public class TeacherController {

    @Autowired
    TeacherService teacherService;

    //查询所有
    @ApiOperation(value = "查询所有讲师")
    @GetMapping("/list")
    public List<Teacher> listAll(){
        List<Teacher> teachers= teacherService.list();
        return teachers;
    }

    //查询指定讲师
    /*
    传参:
        1.路径参数(参数比较少时,适用)
               根据id查询
               查询分页数据
               @PathVaraiable
        2.在请求参数中传参:
                get:url?k=v&k2=v2
                post:请求参数拼接后存在请求体中
                    这两种方式后台获取方式一样
                @RequestParam 获取一个指定参数
                POJO入参: 主要提交的参数的key和pojo的属性名类型一致即可
                -- url?id=1,2,3,4  List<Integer> id
        3.在请求体中使用json传参
            @RequestBody接收
     */
    @ApiOperation(value = "根据id查询讲师")
    @PostMapping("get/{id}")
    public Teacher getById(@ApiParam(value = "讲师id", required = true) @PathVariable("id") String id){
        Teacher teacher = teacherService.getById(id);
        return teacher;
    }
    @PutMapping("get")
    public Teacher getById2(@RequestParam("id") String id){
        Teacher teacher= teacherService.getById(id);
        return teacher;
    }
}

